//Version 1.0 Created by Jim      12.08.2006
//Version 1.1 Revised by Jeffrey  06.06.2007
//modified by jim in              09.27.2008
// oem4pcidll.h : main header file for the OEM4PCIDLL DLL

#ifndef		_OEM4PCIDLL_H
#define		_OEM4PCIDLL_H

#include "resource.h"		
#include "ch365dll.h"	

#define UINT unsigned int
#define UCHAR unsigned char
#define _DLLEXPORT_ _declspec(dllexport)

typedef	VOID  ( CALLBACK	* OEM4_INT_INDEX ) ( VOID );

/********************** Following program for oem4pcidll.dll *************************/



_DLLEXPORT_ HANDLE _stdcall Open_PCIcard(ULONG iIndex);
/*-------------------------------------------------------------------------------------
说明：使用OEM4-PCI设备时首先要调用的函数

	功  能：打开PCI卡,返回句柄,出错则无效（INVALID_HANDLE_VALUE值）

	参  数：iIndex为要打开卡的设备序号,从0开始依次增加

	返回值：

		    值     描述

			-1     打开设备失败
			HANDLE 句柄   


-------------------------------------------------------------------------------------*/ 



_DLLEXPORT_ UCHAR _stdcall  Init_PCIcard(ULONG iIndex,UCHAR *init_addr,UCHAR init_len);

/*------------------------------------------------------------------------------------
说明：在调用OPEN_PCICARD()函数后，初始化OEM4-PCI卡时调用

    功   能：
	  
		对PCI卡初始化（包括对双口RAM自检和与PB连接）
  
	参   数：

		类型	参数	    描述
		UCHAR*	init_addr	指向初始化数据数组首地址的指针
		UCHAR	init_len	初始化数据的长度

	返回值：

		PCI卡初始化包括对双口RAM自检和对PROFIBUS参数初始化两部分，PCI卡首先对双口RAM自检，
		如成功，继续对PROFIBUS参数初始化，否则退出程序，并且返回不同的结果值。

		值	    描述
		0x10	自检和初始化成功
		0x20	自检失败
		0x21	初始化失败
		0x30	自检未获得控制权（循环1000次）
		0x31	初始化时未获得控制权（循环1000次）
		0x40	接口板未准备好
	
--------------------------------------------------------------------------------------*/


_DLLEXPORT_ UCHAR _stdcall Recv_PBdata(ULONG iIndex,UCHAR *revda_addr,UCHAR revda_len,UCHAR *revpda_addr,UCHAR revpda_len);

/*-------------------------------------------------------------------------------------  
说明：接收数据时调用

	功   能：
	
		接收PROFIBUS数据和用户参数

	参   数：
		
		类型	参数	描述
		UCHAR*	revda_addr	指向存放待接收数据的首地址
		UCHAR	revda_len	待接收数据的长度
		UCHAR	revpda_addr	指向存放待接收用户参数的首地址
		UCHAR	revpda_len	待接收用户参数的长度

	返回值：
		
		值	    描述		
		0x10	读取数据成功
		0x11	读取数据失败
		0x20	读取用户参数成功
		0x21	读取用户参数失败
		0x30	未获得控制权
		0x40	输出数据和用户参数数据同时有效，但读取失败
		0x44	输出数据和用户参数数据同时有效，读取用户参数成功
		0x48	输出数据和用户参数数据同时有效，读取数据成功
		0x4C	输出数据和用户参数数据同时有效，读取用户参数和数据成功
		0x50	PROFIBUS主站已连通，没有有效数据
		0x60	PROFIBUS主站未连通

---------------------------------------------------------------------------------------*/


_DLLEXPORT_ UCHAR _stdcall Send_PBdata(ULONG iIndex,UCHAR *sendda_addr,UCHAR sendda_len);
/*--------------------------------------------------------------------------------------
说明：发送数据时调用
	
	功   能：

		发送PROFIBUS数据

	参   数：

		类型	参数	    描述
		UCHAR *	sendda_addr	指向存放待发送数据的首地址
		UCHAR	sendda_len	待发送数据的长度，它包括数据长度、数据、校验和
		
	返回值：

		值	    描述
		0x10	发送数据成功
		0x20	发送数据失败
		0x30	未获得控制权

---------------------------------------------------------------------------------------*/




_DLLEXPORT_ void _stdcall Exit_PCIcard(ULONG iIndex);
/*------------------------------------------------------------------------------------
说明：退出程序时调用

	功  能：退出同时复位PCI卡

	参  数：无

	返回值：无

--------------------------------------------------------------------------------------*/




_DLLEXPORT_ BOOL _stdcall Open_Int(ULONG iIndex,OEM4_INT_INDEX IntEvent);
/*------------------------------------------------------------------------------------
说明：使用中断方式接收数据时调用

	功  能：打开中断使能，中断时响应中断函数IntEvent；

	参  数：
		
		  类型					参数	    描述
		  OEM4_INT_INDEX		IntEvent	接收中断服务函数名

	返回值：

		  值     描述
		  
		  TRUE	 打开中断成功
		  FALSE  打开中断失败


------------------------------------------------------------------------------------*/



_DLLEXPORT_ BOOL _stdcall Close_Int(ULONG iIndex);
/*-----------------------------------------------------------------------------------
说明：

	功  能：关闭中断 

	参  数：无

	返回值：

		  值     描述
		  
		  TRUE	 关闭中断成功
		  FALSE  关闭中断失败

-----------------------------------------------------------------------------------*/


#endif // !defined(AFX_OEM4PCIDLL_H__798E184A_F5B2_4392_9473_53E6670A14D2__INCLUDED_)
